<?php
// +----------------------------------------------------------------------
// | 萤火商城系统 [ 致力于通过产品和服务，帮助商家高效化开拓市场 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2024 https://www.yiovo.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件，不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 萤火科技 <admin@yiovo.com>
// +----------------------------------------------------------------------
declare (strict_types = 1);

namespace app\api\controller\learn;

use app\api\controller\Controller;
use app\api\model\learn\Community as CommunityModel;
use think\response\Json;

/**
 * 商品评价控制器
 * Class Comment
 * @package app\api\controller
 */
class Community extends Controller {
	/**
	 * 商品评价列表
	 * @param int $goodsId 商品ID
	 * @param int|null $scoreType 评价评分
	 * @return Json
	 * @throws \think\db\exception\DbException
	 */
	public function list(): Json {
		// 评价列表
		$model = new CommunityModel;
		$list = $model->getCommentList($this->request->param());
		return $this->renderSuccess(compact('list'));
	}
	public function submit(): Json {

		// 提交商品评价
		$model = new CommunityModel;
		if ($model->increased($this->postForm())) {
			return $this->renderSuccess([], '发布成功');
		}
		return $this->renderError($model->getError() ?: '发布失败');
	}
		public function collectSave(): Json {

		// 提交商品评价
		$model = new CommunityModel;
		if ($model->collectSave($this->postForm())) {
			return $this->renderSuccess([], '发表成功');
		}
		return $this->renderError($model->getError() ?: '发表失败');
	}
	/**
	 * 商品评分总数
	 * @param int $goodsId
	 * @return Json
	 * @throws \think\db\exception\DataNotFoundException
	 * @throws \think\db\exception\DbException
	 * @throws \think\db\exception\ModelNotFoundException
	 */
	public function total(int $goodsId): Json {
		// 指定评分总数
		$model = new CommunityModel;
		$total = $model->getTotal($goodsId);
		return $this->renderSuccess(compact('total'));
	}

	/**
	 * 商品评价列表 (限制数量, 用于商品详情页展示)
	 * @param int $goodsId
	 * @param int $limit
	 * @return Json
	 * @throws \think\db\exception\DataNotFoundException
	 * @throws \think\db\exception\DbException
	 * @throws \think\db\exception\ModelNotFoundException
	 */
	public function listRows(int $goodsId, int $limit = 5): Json {
		// 评价列表
		$model = new CommunityModel;
		$list = $model->listRows($goodsId, $limit);
		// 评价总数量
		$total = $model->rowsTotal($goodsId);
		return $this->renderSuccess(compact('list', 'total'));
	}
}